﻿using System;

namespace Rubik.Tester
{
    /// <summary>
    /// represents solution test result.
    /// </summary>
    public class SolutionTestResult
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="SolutionTestResult"/> class.
        /// </summary>
        /// <param name="passed">if set to <c>true</c> [passed].</param>
        /// <param name="length">The length.</param>
        /// <param name="value">The value.</param>
        /// <param name="orignalState">State of the orignal.</param>
        /// <param name="restoredState">State of the restored.</param>
        public SolutionTestResult(bool passed,
            int length,
            string value,
            byte[][,] orignalState,
            byte[][,] restoredState,
            string errorMessage)
        {
            Passed = passed;
            Length = length;
            Value = value;
            OriginalState = orignalState;
            RestoredState = restoredState;
            ErrorMessage = errorMessage;
        }

        /// <summary>
        /// Gets a value indicating whether this <see cref="SolutionTestResult"/> is passed.
        /// </summary>
        /// <value><c>true</c> if passed; otherwise, <c>false</c>.</value>
        public bool Passed
        {
            get;
            private set;
        }

        /// <summary>
        /// Gets the length of the result.
        /// </summary>
        /// <value>The length of the result.</value>
        public int Length
        {
            get;
            private set;
        }

        /// <summary>
        /// Gets the result value.
        /// </summary>
        /// <value>The result value.</value>
        public string Value
        {
            get;
            private set;
        }

        /// <summary>
        /// Gets the orignal state.
        /// </summary>
        /// <value>The orignal state.</value>
        public byte[][,] OriginalState
        {
            get;
            private set;
        }

        /// <summary>
        /// Gets the restored state.
        /// </summary>
        /// <value>The restored state.</value>
        public byte[][,] RestoredState
        {
            get;
            private set;
        }

        public string ErrorMessage
        {
            get;
            private set;
        }
    }
}
